# -*- coding: utf-8 -*-
"""
@Time ：2021/3/30 20:30 
@Auth ： Mr. William 1052949192
@Company ：特斯汀学院 @testingedu.com.cn
@Function ：excel数据驱动
"""
import traceback

from common.excel.Excel import get_reader, get_writer
from keywords.webkeys import Web

# 创建关键字对象
web = Web()


def runcase(obj, line, i):
    """
    反射执行用例
    :param obj: 关键字对象
    :param line: 数据驱动的参数
    :param i: 结果写入的行
    """
    if len(line[0]) > 1 or len(line[1]) > 1:
        # 分组信息，不用执行
        print(line)
    try:
        func = getattr(obj, line[3])
    except Exception as e:
        print('关键字%s不存在' % line[3])
        return

    # 截取参数列表
    params = line[4:]
    params = params[:params.index('')]
    print(params)
    # 开始执行
    try:
        if params:
            func(*params)
        else:
            func()
        # 执行成，则写入pass
        writer.write(i, 7, "PASS",3)
    except Exception as e:
        # 执行失败，则写入fail，并保存报错信息
        writer.write(i, 7, "FAIL",2)
        writer.write(i, 8, str(traceback.format_exc()))


reader = get_reader('../lib/电商项目用例.xlsx')
writer = get_writer('../lib/电商项目用例.xlsx', '../lib/result-电商项目用例.xlsx')
# 一个sheet页面一个sheet页面读
sheetname = reader.get_sheets()
print(sheetname)
for sheet in sheetname:
    # 设置当前读取的sheet页面
    reader.set_sheet(sheet)
    writer.set_sheet(sheet)
    lines = reader.readline()
    print(lines)
    for i in range(1, len(lines)):
        print(lines[i])
        runcase(web, lines[i], i)

    print()

# 全部跑完后，保存结果
writer.save_close()
